﻿//Install Visual T4 for syntax highlighting!
//http://visualstudiogallery.msdn.microsoft.com/40a887aa-f3be-40ec-a85d-37044b239591



using System;

namespace Sponsorship.Domain.MembershipTypes
{
		
    public sealed class EnterMembershipType : ICommand
    {
        public Guid MembershipTypeId { get; private set; }
        public string Name { get; private set; }
        public decimal Amount { get; private set; }
        public Period Period { get; private set; }
        public string Comment { get; private set; }
        
        public EnterMembershipType () {}
        public EnterMembershipType (Guid membershipTypeId, string name, decimal amount, Period period, string comment)
        {
            MembershipTypeId = membershipTypeId;
            Name = name;
            Amount = amount;
            Period = period;
            Comment = comment;
        }
    }
    
    public sealed class MembershipTypeEntered : Event
    {
        public Guid MembershipTypeId { get; private set; }
        public string Name { get; private set; }
        public decimal Amount { get; private set; }
        public Period Period { get; private set; }
        public string Comment { get; private set; }
        
        public MembershipTypeEntered () {}
        public MembershipTypeEntered (Guid membershipTypeId, string name, decimal amount, Period period, string comment)
        {
            MembershipTypeId = membershipTypeId;
            Name = name;
            Amount = amount;
            Period = period;
            Comment = comment;
        }
    }
    
    public sealed class ChangeMembershipType : ICommand
    {
        public Guid MembershipTypeId { get; private set; }
        public int Version { get; private set; }
        public string Name { get; private set; }
        public decimal Amount { get; private set; }
        public Period Period { get; private set; }
        public string Comment { get; private set; }
        
        public ChangeMembershipType () {}
        public ChangeMembershipType (Guid membershipTypeId, int version, string name, decimal amount, Period period, string comment)
        {
            MembershipTypeId = membershipTypeId;
            Version = version;
            Name = name;
            Amount = amount;
            Period = period;
            Comment = comment;
        }
    }
    
    public sealed class MembershipTypeChanged : Event
    {
        public Guid MembershipTypeId { get; private set; }
        public string Name { get; private set; }
        public decimal Amount { get; private set; }
        public Period Period { get; private set; }
        public string Comment { get; private set; }
        
        public MembershipTypeChanged () {}
        public MembershipTypeChanged (Guid membershipTypeId, string name, decimal amount, Period period, string comment)
        {
            MembershipTypeId = membershipTypeId;
            Name = name;
            Amount = amount;
            Period = period;
            Comment = comment;
        }
    }
    
    public sealed class DeleteMembershipType : ICommand
    {
        public Guid MembershipTypeId { get; private set; }
        public int Version { get; private set; }
        
        public DeleteMembershipType () {}
        public DeleteMembershipType (Guid membershipTypeId, int version)
        {
            MembershipTypeId = membershipTypeId;
            Version = version;
        }
    }
    
    public sealed class MembershipTypeDeleted : Event
    {
        public Guid MembershipTypeId { get; private set; }
        
        public MembershipTypeDeleted () {}
        public MembershipTypeDeleted (Guid membershipTypeId)
        {
            MembershipTypeId = membershipTypeId;
        }
    }

}